package com.atis.warplot.database;

import java.util.ArrayList;
import java.util.List;

import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.OneToMany;
import javax.persistence.Table;

import org.hibernate.annotations.Cascade;
import org.hibernate.annotations.CascadeType;
import org.hibernate.annotations.LazyCollection;
import org.hibernate.annotations.LazyCollectionOption;
import org.hibernate.annotations.Proxy;

@Entity
@Table(name = "t_unidad")
@Proxy(lazy = false)
public class Unidad {

	private int id;

	private String tipo;
	private String nombre;
	private double costo;
	private int vida;
	private int defensa;
	private int ataque;
	private double velocidad;
	private String imagen;
	private String sonido;

	private List<UnidadesFinales> listaUnidadesFinales = //
			new ArrayList<UnidadesFinales>();

	// --------------------------------------------------------------------------------

	@Id
	@GeneratedValue(strategy = GenerationType.AUTO)
	public int getId() {
		return id;
	}

	public void setId(int id) {
		this.id = id;
	}

	// --------------------------------------------------------------------------------

	public String getTipo() {
		return tipo;
	}

	public void setTipo(String tipo) {
		this.tipo = tipo;
	}

	// --------------------------------------------------------------------------------

	public String getNombre() {
		return nombre;
	}

	public void setNombre(String nombre) {
		this.nombre = nombre;
	}

	// --------------------------------------------------------------------------------

	public int getVida() {
		return vida;
	}

	public void setVida(int vida) {
		this.vida = vida;
	}

	// --------------------------------------------------------------------------------

	public int getDefensa() {
		return defensa;
	}

	public void setDefensa(int defensa) {
		this.defensa = defensa;
	}

	// --------------------------------------------------------------------------------

	public int getAtaque() {
		return ataque;
	}

	public void setAtaque(int ataque) {
		this.ataque = ataque;
	}

	// --------------------------------------------------------------------------------

	public double getVelocidad() {
		return velocidad;
	}

	public void setVelocidad(double velocidad) {
		this.velocidad = velocidad;
	}

	// --------------------------------------------------------------------------------

	public double getCosto() {
		return costo;
	}

	public void setCosto(double costo) {
		this.costo = costo;
	}

	// --------------------------------------------------------------------------------

	public String getImagen() {
		return imagen;
	}

	public void setImagen(String imagen) {
		this.imagen = imagen;
	}

	// --------------------------------------------------------------------------------

	public String getSonido() {
		return sonido;
	}

	public void setSonido(String sonido) {
		this.sonido = sonido;
	}

	// --------------------------------------------------------------------------------

	@OneToMany(mappedBy = "unidadRef", orphanRemoval = true)
	@LazyCollection(LazyCollectionOption.TRUE)
	@Cascade({CascadeType.ALL})
	public List<UnidadesFinales> getListaUnidadesFinales() {
		return listaUnidadesFinales;
	}

	public void setListaUnidadesFinales( //
			List<UnidadesFinales> listaUnidadesFinales) {
		this.listaUnidadesFinales = listaUnidadesFinales;
	}

	// --------------------------------------------------------------------------------

}
